$(function () {
    var currentPage = 1; //当前页
    var pageSize = 5; //每页数据条数
    // 1.首页数据渲染
    function render() {
        $.ajax({
            type: 'get',
            url: '/product/queryProductDetailList',
            data: {
                page: currentPage,
                pageSize: pageSize
            },
            dataType: 'json',
            success: function (res) {
                console.log(res);
                $('tbody').html(template('tmp', res))
                setPage(res.total)
            }
        })
    }
    render();
    // 2.分页
    function setPage(total) {
        // 用插件生成分页小按钮  
        $("#paginator").bootstrapPaginator({
            bootstrapMajorVersion: 3,//默认是2，如果是bootstrap3版本，这个参数必填
            currentPage: currentPage,// 高亮的分页小按钮的下标 
            totalPages: Math.ceil(total / pageSize),// 分页按钮的个数     
            onPageClicked: function (event, originalEvent, type, page) {
                //为按钮绑定点击事件 page:当前点击的按钮值
                // 1- 改变当前页的取值 
                currentPage = page;
                // 2- 重新渲染
                render();
            }
        });
    }
    // 3- 下拉列表填充
    // ajax + 模板引擎 
    $.ajax({
        type: 'get',
        url: '/category/querySecondCategoryPaging',
        data: {
            page: 1,
            pageSize: 1000
        },
        dataType: 'json',
        success: function (res) {
            // console.log(res);
            // 渲染
            $('.cate-one-list').html(template('tmp-two-list', res))
        }
    })
    // 4.下拉列表选中效果
    // 当点击 下拉列表时： 
    // 1- 获取当前a标签的文字，设置给按钮的文本 
    // 2- 获取当前a标签的id,设置给隐藏域 ， 将来传递给后台的 
    $('.cate-one-list').on('click', 'a', function () {
        // console.log( '111' );
        $('.btn-txt').text($(this).text())
        $('#brandId').val($(this).data('id'))

        // 7-手动恢复图片和下拉列表的校验状态
        // 当下拉列表选中后，恢复下拉列表的选中状态 
        $('#addform').data('bootstrapValidator').updateStatus('brandId', 'VALID');
    })
    // 5- 上传图片 
    // 要求：
    // 1- 必须上传三张图片 ，做为商品轮播图 
    // 2- 只保留最近上传三张 
    // 用数组解决问题： length, 下标
    var picArr = [];//统计上传成功图片个数和顺序

    $('#file').fileupload({//文件服务器返回图片新手，如何进行处理
        dataType: "json",//服务器返回的数据如何进行解析
        // e：事件对象
        // data：图片上传后的对象，通过data.result.picAddr可以获取上传后的图片地址
        // 类似 success:function(){}
        done: function (e, data) {
            // console.log(data.result);
            var img = data.result;
            // console.log( img );
            // 将图片地址存放到picArr数组中，每存入一个地址都先重数组前面开始存储
            picArr.unshift(img); //unshift() 在数组前面添加元素
            // console.log( picArr);
            if (picArr.length > 3) {
                picArr.pop();
            }
            if (picArr.length == 1) {
                $('#img1').attr('src', picArr[0].picAddr)
            }
            if (picArr.length == 2) {
                $('#img1').attr('src', picArr[0].picAddr)
                $('#img2').attr('src', picArr[1].picAddr)
            }
            if (picArr.length == 3) {
                $('#img1').attr('src', picArr[0].picAddr)
                $('#img2').attr('src', picArr[1].picAddr)
                $('#img3').attr('src', picArr[2].picAddr)
                var str = JSON.stringify(picArr); // 把picArr 转成 json字符串 
                $('#picArr').val(str);

                // 7-手动恢复图片和下拉列表的校验状态
                // 当图片上传完成，并且图片为3张时，恢复图片的校验状态
                $('#addform').data('bootstrapValidator').updateStatus('picArr', 'VALID');
            }
            console.log(picArr);
        }
    })

    // 6-表单非空校验 
    //使用表单校验插件
    $('#addform').bootstrapValidator({
        //1. 指定不校验的类型，默认为[':disabled', ':hidden', ':not(:visible)'],可以不设置
        excluded: [':disabled'],

        //2. 指定校验时的图标显示，默认是bootstrap风格
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },

        //3. 指定校验字段
        fields: {
            //校验用户名，对应name表单的name属性
            brandId: {
                validators: {
                    //不能为空
                    notEmpty: {
                        message: '请选择二级分类'
                    }
                }
            },
            // 商品名称
            proName: {
                validators: {
                    //不能为空
                    notEmpty: {
                        message: '请输入商品名称'
                    }
                }
            },
            // 商品描述
            proDesc: {
                validators: {
                    //不能为空
                    notEmpty: {
                        message: '请输入商品描述'
                    }
                }
            },
            // 商品尺码
            size: {
                validators: {
                    //不能为空
                    notEmpty: {
                        message: '请输入商品尺码'
                    },
                    //正则校验: 必须是xx-xx格式， x数字  23-42
                    regexp: {
                        regexp: /^[1-9]\d-[1-9]\d$/,
                        message: '尺码 必须是xx-xx格式， x数字  '
                    }
                }
            },
            // 商品库存
            num: {
                validators: {
                    //不能为空
                    notEmpty: {
                        message: '请输入商品库存'
                    },
                    //正则校验： 非0开头的数字  3
                    regexp: {
                        regexp: /^[1-9]\d*$/,
                        message: '库存必须是 非0开头的数字'
                    }
                }
            },
            // 商品原价 是整数和小数 
            oldPrice: {
                validators: {
                    //不能为空
                    notEmpty: {
                        message: '请输入商品原价'
                    },
                    //正则校验： 非0开头的数字  3
                    regexp: {
                        regexp: /^(([^0][0-9]+|0)\.([0-9]{1,2})$)|^(([^0][0-9]+|0)$)|^(([1-9]+)\.([0-9]{1,2})$)|^(([1-9]+)$)/,
                        message: '商品原价只能是数字(小数点保留两位)'
                    }
                }
            },
            // 商品现价 是整数和小数 
            price: {
                validators: {
                    //不能为空
                    notEmpty: {
                        message: '请输入商品现价'
                    },
                    //正则校验： 非0开头的数字  3
                    regexp: {
                        regexp: /^(([^0][0-9]+|0)\.([0-9]{1,2})$)|^(([^0][0-9]+|0)$)|^(([1-9]+)\.([0-9]{1,2})$)|^(([1-9]+)$)/,
                        message: '商品现价只能是数字(小数点保留两位)'
                    }
                }
            },
            //图片信息
            picArr: {
                validators: {
                    //不能为空
                    notEmpty: {
                        message: '请上传3张图片'
                    }
                }
            }
        }

    });

    // 8-添加商品
    $('#addform').on('success.form.bv',function (e) {
        // 阻止sumbit 默认提交 
        e.preventDefault();
        // console.log( '111' );
        // 进行ajax 提交
        $.ajax({
             type: 'post',
             url: '/product/addProduct',
             data: $('#addform').serialize(),
             dataType: 'json',
             success: function (res) {
                // console.log(res);
                // 页面重新渲染
                render();
                // 表单重置：重置表单数据和校验样式
                $('#addform').data('bootstrapValidator').resetForm(true);
                // 隐藏模态框
                $('.modal-add').modal('hide');
                // 手动重置 图片 和按钮的文字
                $('.btn-txt').text('请选择二级分类');
                var src = './images/none.png'
                $('.img-box img').attr('src',src)
                // 重置图片容器 picArr (吃完洗完)
                picArr = [];
             }
         })
    })

    // 9-商品上下架
    $('.btn-ok').on('click',function () {
        //  console.log( '111' );
        
    })
})  